בעיית שיבוץ משימות.J כל משימה j J מאופיינת על הקלט: קבוצת משימות.t(j) s(j) וזמן סיום ידי זמן התחלה J J של משימות לא חופפות בזמן, הפלט: תת-קבוצה שהיא מ

Similar documents
קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

Depth-First Search DFS

אלגוריתמים 1 דפי עזר

עץ תורשה מוגדר כך:שורש או שורש ושני בנים שכל אחד מהם עץ תורשה,כך שערך השורש גדול או שווה לסכום הנכדים(נכד-הוא רק בן של בן) נתון העץ הבא:

סיכום מבני נתונים )שיעור( מרצה: אלכס סמורודניצקי. להערות: אמיר נווה

קובץ שאלות פתורות אביב 2102

תכנון אלגוריתמים, אביב 2010, תרגול מס' 7 סריקה לעומק, מיון טופולוגי, רכיבים קשירים היטב. time time 1

יסודות מבני נתונים. תרגול :9 ערימה - Heap

Practical Session No. 13 Amortized Analysis, Union/Find

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

תרגול 11 תור עץ חיפוש בינארי

חזרה, מיונים פולינה לוצקר

הגדרה: משפחת עצים תקרא מאוזנת אם (n.h(t) = O(log

הקיטסיגול הרבחה יעדמל בלושמה גוחה

מבני נתונים תרגיל 5 שאלות לגבי העבודה יש להעלות בפורום של הקורס או בשעות הקבלה של המרצה או המתרגל האחראיים על העבודה.

. s בנוסף, המרחק בקשתות על העץ מ- s לכל צומת ב- R הוא מינימאלי. נותן פיתרון ל: מציאת מסלול קצר ביותר מהמקור לכל צומת. גלוי צמתים ברי הגעה מהמקור.

מבני נתונים תרגיל 4 פתרון

מבוא לתכנות ב- JAVA תרגול 7

A R E Y O U R E A L L Y A W A K E?

זו מערכת ישרת זוית )קרטזית( אשר בה יש לנו 2 צירים מאונכים זה לזה. באותו מישור ניתן להגדיר נקודה על ידי זוית ורדיוס וקטור

שאלה ) 1 מבחינה של פרופ' נוגה אלון ( G V עם משקלים על הקשתות, ונתון עץ פורש מינימלי של G. נניח

תוכן העניינים: פרק סדרות סיכום תכונות הסדרה החשבונית:... 2 תשובות סופיות:...8 סיכום תכונות הסדרה ההנדסית:...10

סיבוכיות זמן ריצה רדוקציות ושלמות ב- NP המחלקה P הגדרה: = המחלקה NP הגדרה: שפה סגירות שפות הגדרה: רדוקציה

תרגול מס' 01 אלגוריתם דיניץ

תרגול 8. Hash Tables

Rules Game (through lesson 30) by Nancy Decker Preparation: 1. Each rule board is immediately followed by at least three cards containing examples of

A lot of the time when people think about Shabbat they focus very heavily on the things they CAN T do.

פרק מיון וחיפוש - לשם מה? הגדרה

שנת לימודים סמסטר מועד ניתן בתאריך מרצה מתרגל שאלות. 0, 3 r. n ויהי : 2 איתי בארלי גרסה / /1/14 פרופ' אהוד לרר איתי בארלי. a.

Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

ASP.Net MVC + Entity Framework Code First.

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

שאלות חזרה לקראת מבחן מפמ"ר אינטרנט וסייבר

THINKING ABOUT REST THE ORIGIN OF SHABBOS

Name Page 1 of 5. דף ז. This week s bechina begins with the fifth wide line at the top of

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון א' Corresponds with Module A (Without Access to Information from Spoken Texts) גרסה א'

מבוא לרשתות - תרגול מס' 11 Transparent Bridges

Advisor Copy. Welcome the NCSYers to your session. Feel free to try a quick icebreaker to learn their names.

עצים ועצי חיפוש חומר קריאה לשיעור זה. Chapter 5.5 Trees (91 97) Chapter 13 Binary Search Trees ( )

מספר השאלון: Thinking Skills נספח: כישורי חשיבה )לפרק ראשון ושני( א נ ג ל י ת (MODULE F) ספרות )מילון הראפס אנגלי-אנגלי-ערבי(

sharing food intro price & extra drinks * ניתן להזמין מנות כשרות בתאום מראש for good memories

תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

אנגלית שאלון ז' ג רסה א' הוראות לנבחן בהצלחה! )4( ההנחיות בשאלון זה מנוסחות בלשון זכר ומכוונות לנבחנות ולנבחנים כאחד. (MODULE G)

שאלון ד' הוראות לנבחן

Patents Basics. Yehuda Binder. (For copies contact:

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 102 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 5

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

שאלון ו' הוראות לנבחן

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

בהצלחה! (MODULE C) Hoffman, Y. (2014). The Universal English-Hebrew, Hebrew-English Dictionary

אנגלית (MODULE E) בהצלחה!

SEEDS OF GREATNESS MINING THROUGH THE STORY OF MOSHE S CHILDHOOD

NATIONAL COUNCIL OF YOUNG ISRAEL. Shavuot Nation JEWISH EDITION. Compiled by Gabi Weinberg Teen Program Director

P NP DTIME( nc ) :,A p B

מספר השאלון: הצעת תשובות לשאלות בחינת הבגרות אנגלית (MODULE C) מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי قاموس إنجليزي - إنجليزي - عربي

SHABBOS, 10 TAMMUZ, 5778

M A K I N G N E G A T I V E S P O S I T I V E

מבוא למחשב בשפת פייתון

מספר מילה. you very hungry am דוגמאות: decision trees ההודעה.

שאלון ו' הוראות לנבחן

א נ ג ל י ת בהצלחה! ב. משרד החינוך בגרות לנבחנים אקסטרניים )מילון הראפס אנגלי-אנגלי-ערבי( השימוש במילון אחר טעון אישור הפיקוח על הוראת האנגלית.

אוניברסיטת בן גוריון בנגב

Name Page 1 of 6. דף ט: This week s bechina starts at the two dots in the middle of

אנגלית ספרות בהצלחה! /המשך מעבר לדף/ נספח: כישורי חשיבה )לפרק ראשון ושני( או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

BEAUTY AND UGLINESS. Global Day of Jewish Learning: Curriculum. A Project of the Aleph Society

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון ב' Corresponds with Module B גרסה ב' הוראות לנבחן

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

המחלקה למדעי המחשב, אוניברסיטת בן גוריון מבני נתונים, סמסטר אביב 2102 עבודת בית מספר - 2 מעשית

ãówh,é ËÓÉÔê ÌW W É Å t" Y w f É ËÓÉÑ É èw É f Ñ u ð NNM YóQ' ÌW W É Y ÉgO d óqk É w f ym Éd É u ð NNM ÌWNQMH uqo ð NNM ÌWNQMH

בוחן בתכנות בשפת C בצלחה

מ ש ר ד ה ח י נ ו ך ה פ ד ג ו ג י ת א ש כ ו ל מ ד ע י ם על ה ו ר א ת ה מ ת מ ט י ק ה מחוון למבחן מפמ"ר לכיתה ט', רמה מצומצמת , תשע"ב טור א'

פרק יעילות היעילות של קריטריון המקום עוסק בנושאים דומים לאלה של קריטריון הזמן. אנו נתרכז בחישובי היעילות של מדד הזמן.

ALEPH-TAU Hebrew School Lesson 204 (Nouns & Verbs-Masculine)

סוגי פניות בתוכנית הלימודים עיוני משולב מעשי 180 דקות 4 שיעורים

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

4...Informed Search Strategies Partial Order Planning 29...Hierarchical Decomposition Reenforcement Learning 40...Unsupervised Learning

A JEW WALKS INTO A BAR: JEWISH IDENTITY IN NOT SUCH JEWISH PLACES

A Long Line for a Shorter Wait at the Supermarket

Hebrew Adjectives. Hebrew Adjectives fall into 3 categories: Attributive Predicative Substantive

פרק היררכי

(MODULE E) ב ה צ ל ח ה!

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

םימתירוגלאו םינותנ ינבמ המירעו תינס, חמ רות רקצול הנילופ

תורשכ ירפס לכ ץבוק " ב י קלח יללכ רעש

סה"כ נקודות סה"כ 31 נקודות סה"כ 21 תוכן עניינים של פתרון המבחן. לולאת for )נתון אלגוריתם... מעקב, פלט

Reflection Session: Sustainability and Me

ב. משרד החינוך בגרות לנבחנים אקסטרניים א נ ג ל י ת (MODULE B) הוראות מיוחדות: )2( בתום הבחינה החזר את השאלון למשגיח. בהצלחה!

HEBREW THROUGH MOVEMENT

מושגים בסיסיים תלמידים והורים יקרים,

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

כ"ג אלול תשע"ו - 26 ספטמבר, 2016 Skills Worksheet #2

Introduction to Hebrew. Session 7: Verb Tense Complete

אנגלית שאלון ז' (MODULE G) ג רסה א' הוראות לנבחן )מילון אנגלי-ערבי / ערבי-אנגלי )

הקיטסיגול הרבחה יעדמל בלושמה גוחה

Global Day of Jewish Learning

Jacob and the Blessings

במבוא מורחב למדעי המחשב בשפת פייתון

HEBREW THROUGH MOVEMENT

מבוא למחשב בשפת Matlab

Transcription:

אלגוריתמים חמדנים בעיות ניהול משאבים קידוד Huffman בעיית עץ פורש מינימום פרק 4 ב- Kleinberg/Tardos הרעיון: בונים את הפלט בהדרגה. בכל צעד בוחרים החלטה אופטימלית לאותו הצעד ולא משנים אותה. בדרך כלל זהו רעיון גרוע! 1

בעיית שיבוץ משימות.J כל משימה j J מאופיינת על הקלט: קבוצת משימות.t(j) s(j) וזמן סיום ידי זמן התחלה J J של משימות לא חופפות בזמן, הפלט: תת-קבוצה שהיא מקסימלית בגודלה. ציר הזמן 2

בעיית שיבוץ משימות.J כל משימה j J מאופיינת על הקלט: קבוצת משימות.t(j) s(j) וזמן סיום ידי זמן התחלה J J של משימות לא חופפות בזמן, הפלט: תת-קבוצה שהיא מקסימלית בגודלה. ציר הזמן 2

אלגוריתם החמדן 1. בחר משימה. 2. זרוק את כל המשימות החופפות לה.. אם עדיין יש משימות שלא נבחרו או נזרקו: חזור לצעד מספר 1. מהו כלל בחירה טוב? לפי סדר זמן ההתחלה: לפי משך המשימה: לפי מספר המשימות החופפות:

אלגוריתם החמדן 1. בחר משימה. 2. זרוק את כל המשימות החופפות לה.. אם עדיין יש משימות שלא נבחרו או נזרקו: חזור לצעד מספר 1. מהו כלל בחירה טוב? לפי סדר זמן ההתחלה: לפי משך המשימה: לפי מספר המשימות החופפות:

אלגוריתם החמדן 1. בחר משימה. 2. זרוק את כל המשימות החופפות לה.. אם עדיין יש משימות שלא נבחרו או נזרקו: חזור לצעד מספר 1. מהו כלל בחירה טוב? לפי סדר זמן ההתחלה: לפי משך המשימה: לפי מספר המשימות החופפות:

אלגוריתם החמדן 1. בחר משימה. 2. זרוק את כל המשימות החופפות לה.. אם עדיין יש משימות שלא נבחרו או נזרקו: חזור לצעד מספר 1. מהו כלל בחירה טוב? לפי סדר זמן ההתחלה: לפי משך המשימה: לפי מספר המשימות החופפות:

אלגוריתם החמדן לשיבוץ משימות נבחר לפי סדר זמן הסיום! sort(j,t) while J do next_job first entry in J write(next_job) for every j J s.t. s(j) < t(next_job) do J J {j} end for end while 4

הדגמת הרצה

הדגמת הרצה

הדגמת הרצה

הדגמת הרצה

הדגמת הרצה

הדגמת הרצה

הדגמת הרצה

הדגמת הרצה

הוכחת נכונות קבוצת פלט האלגוריתם וב- Opt את ב- Alg נסמן משימות מקסימלית כלשהי. משפט: Opt Alg = הוכחה לפי סדר עולה של וב- Opt נרשום את המשימות ב- Alg :t ערכי Alg = {i1,i2,i,...,ik} Opt = {j1,j2,j,...,jm} q=1,2,...,k מתקיים נוכיח באינדוקציה שלכל t(iq) t(jq)

המשך ההוכחה בסיס האינדוקציה: = 1,q לפי כלל הבחירה.,q-1 כלומר: נניח נכונות עבור t(iq-1) t(jq-1) שימו לב כי t(jq-1) s(jq) ולכן, כאשר האלגוריתם הוסיף את, iq עדיין לא נזרקה, ולכן, לפי כלל הבחירה t(iq) t(jq) כנדרש. jq,m > k אחרת עכשיו לא ייתכן כי s(jk+1) t(jk) t(ik) וזו סתירה לתנאי הסיום של האלגוריתם. 7

סיבוכיות הזמן החלק ה יקר הוא המיון שלוקח (n. O(n log שאר האלגוריתם ניתן למימוש בזמן O(n). (זאת בהנחה שמיינו פעמיים, גם לפי ערכי.) s 8

בעיית מיזעור האחור הקלט: משימה j J מאופיינת על ידי משך ביצוע p(j) ותאריך יעד d(j). s(j) לכל משימה, כך שהמשימות הפלט: מועד התחלה תתבצענה ללא חפיפה, והאחור המירבי ביחס לתאריך היעד הוא מינימלי. L = maxj L(j) L(j) = max{0,s(j)+p(j)-d(j)} האחור המירבי: ציר הזמן 9

אלגוריתם החמדן למיזעור האחור אפשר להציג פתרון לבעייה כפרמוטציה על המשימות, שתשובצנה בסדר הפרמוטציה בזו אחר זו ללא רווחים. נשתמש בשיבוץ לפי סדר תאריכי היעד: sort(j,d) s(0) 0 for j 1 to J do s(j) = s(j-1) + p(j-1) end for 10

הוכחת נכונות משפט: האלגוריתם מוציא שיבוץ אופטימלי. הוכחה נתבונן בשיבוץ אופטימלי כלשהו, פרמוטציה j1,j2,j,...,jn אם שיבוץ זה שונה מפלט האלגוריתם, אזי יש אינדקס i עבורו d(ji) d(ji+1) 11

המשך ההוכחה אם נחליף את הסדר בין זוג המשימות הללו, לא נגדיל את ערך הפתרון. כדי לראות זאת, נסמן ב- את המשתנים בפתרון השני. לפני אחרי L (ji) = max{0,s(ji+1)+p(ji+1)-d(ji)} max{0,s(ji+1)+p(ji+1)-d(ji+1)} = L(ji+1) L (ji+1) = max{0,s(ji)+p(ji+1)-d(ji+1)} max{0,s(ji+1)+p(ji+1)-d(ji+1)} = L(ji+1) 2 1 1 1 2 2 12

המשך ההוכחה נמשיך להחליף זוגות סמוכים כל עוד הסדר שונה מסדר האלגוריתם. המחיר לא עלה בכל החלפה, כך שמחיר הפתרון של האלגוריתם אינו גדול יותר ממחיר פתרון אופטימלי. סיבוכיות הזמן כמו בבעיית השיבוץ הקודמת, הגורם הדומיננטי הוא זמן המיון, שלוקח n). O(n log 1

בעיית הדיפדוף זיכרון וירטואלי של מחשב מחולק ל דפים. k דפים. למחשב יש זיכרון מטמון שמכיל תוכנית מחשב גדולה ניגשת לסדרה ארוכה של דפים לפי סדר נתון, למשל: a b a b c d a e d b c f d e a b c d e f אם דף אינו במטמון, יש להחליף דף אחר במטמון בדף המבוקש. כמובן ייתכן שהדף שזה עתה החלפנו יידרש בעתיד, ונצטרך להביאו מחדש. רוצים למזער את מספר ההחלפות. 14

הצגה פורמלית של בעיית הדיפדוף הקלט: סדרה סופית P של מספרים חיוביים (מספרי דפים מבוקשים). הפלט: סדרה S של מספרים באורך זהה לאורך הקלט. בסדרה זו, ערך חיובי מציין מספר דף שיש לזרוק מהמטמון, וכל ערך אחר מציין שאין צורך לזרוק דף מהמטמון בצעד זה. הסדרה צריכה להכיל מספר מינימלי של ערכים חיוביים מבין כל הסדרות החוקיות. סדרה היא חוקית אםם לכל צעד i, i המטמון מכיל לכל k דפים. היותר 1

אלגוריתם Belady לבעיית הדיפדוף בכל צעד שדורש החלפה, נזרוק מהמטמון את הדף שיידרש בעתיד הרחוק ביותר (מבין כל הדפים במטמון). 1

מימוש האלגוריתם next(i) שהוא המקום הבא נחשב ערך לכל איבר i ב- P בסדרה שבה מופיע דף זה: for p 1 to #pages do המקום האחרון בו נראה דף last[p] 0 p end for for i 1 to P do next(i) if last[p(i)] > 0 then next(last[p(i)]) i end if last[p(i)] i end for 17

המשך המימוש המטמון cache for i 1 to P do S(i) 0 if P(i) cache and cache = k then S(i) argmax{next(p): p cache} cache cache {S(i)} end if זו פרוצדורה שדורשת מימוש cache cache {P(i)} end for 18

תרגיל בית 1. הוכיחו את נכונות האלגוריתם של.Belady 2. נתחו את סיבוכיות הזמן והמקום. 19

קידוד Huffman.k n תווים מא ב בגודל נתון קובץ ובו קידוד unicode של הקובץ דורש 1n ביטים. קידוד באורך קבוע ידרוש n log k ביטים. כדי לחסוך במקום, נשתמש בקידוד באורך משתנה - תווים שכיחים יותר יקודדו בפחות ביטים מתווים נדירים. לפיענוח קל נדרוש: לכל תו, קידודו איננו רישא של הקידוד של תו אחר. 20

דוגמה בקובץ 100,000 תווים מהא ב {א,ב,ג,ד,ה,ו}. א ב ג ד ה ו סה כ שכיחות 100% % 9% 1% 12% 1% 4% 00,00 0 אורך קבוע 101 100 011 010 001 000 224,00 0 אורך משתנה 1100 1101 111 100 101 0 21

ייצוג הקידוד נייצג את הקידוד על ידי עץ בינארי: העלים יסומנו על ידי התווים. קשת לבן שמאלי תסומן 0. קשת לבן ימני תסומן 1. 0 1 0 1 0 0 1 0 1 0 1 ו ה ד ג ב א העץ המתאים לקוד קבוע ( ביטים) 22

ייצוג הקידוד (המשך) א 0 1 0 1 0 1 0 1 ג ב 0 1 ד ו ה העץ המתאים לקוד אופטימלי 2

ייצוג הקידוד (המשך) טענה: העץ המתאים לקוד אופטימלי הוא תמיד עץ בינארי (כלומר, לכל צומת שאינו עלה יש שני ילדים). מלא נסמן C ב- C את הא ב. C עלים ו- 1- C צמתים פנימיים. לכן בעץ אופטימלי יש מופיע בקובץ. את מספר הפעמים ש- c עבור c C נסמן ב-( f(c ב-( dt(c T נסמן עבור עץ ב- T. את עומק העלה המסומן ב- c B(T) = c C f(c) dt(c) T הוא: המחיר של 24

בניית קידוד Huffman בונים את העץ מלמטה למעלה. 1- C פעולות מיזוג ליצירת העץ עלים ומבצעים מתחילים מ- C הסופי. ו-[ right[x לילד שמאלי וימני, left[x] לכל צומת x נחזיק מצביעים בהתאמה. 2

בניית קידוד Huffman צריך לממש את H במבנה נתונים שמאפשר שליפה מהירה של Huffman(C,f) המינימום, מחיקה והוספה של H C איברים. for i 1 to C -1 do צומת חדש בעץ z left[z] x argmin{f(c): c H} right[z] y argmin{f(c): c H {x}} f(z) f(x) + f(y) H H {x,y} {z} end for האיבר הבודד ב- H return 2

דוגמת הרצה 9 12 1 1 4 27

דוגמת הרצה 9 12 1 1 4 27

דוגמת הרצה 9 12 1 1 4 27

דוגמת הרצה 14 12 1 1 4 9 27

דוגמת הרצה 14 12 1 1 4 9 27

דוגמת הרצה 14 12 1 1 4 9 27

דוגמת הרצה 14 2 1 4 9 12 1 27

דוגמת הרצה 14 2 1 4 9 12 1 27

דוגמת הרצה 14 2 1 4 9 12 1 27

דוגמת הרצה 0 2 4 14 1 12 1 9 27

דוגמת הרצה 0 2 4 14 1 12 1 9 27

דוגמת הרצה 0 2 4 14 1 12 1 9 27

דוגמת הרצה 4 2 0 12 1 14 1 9 27

דוגמת הרצה 4 2 0 12 1 14 1 9 27

דוגמת הרצה 4 2 0 12 1 14 1 9 27

100 דוגמת הרצה 4 2 0 12 1 14 1 9 27

סיבוכיות מימוש פשוט בלולאה מתבצעות 1- C איטרציות. באיטרציה i ה- i מוצאים פעמיים מינימום. מספר הערכים C + 1 - i זמן הריצה: ) 2 O( C מימוש מתוחכם נממש את H על ידי ערמה.(heap) הבנייה: O( C ) מציאת מינימום/הוספה או הורדה של איבר: ( C O(log זמן הריצה: C ) O( C log 28

הוכחת נכונות נראה נכונות באינדוקציה על גודל הא ב C בסיס: א ב בגודל - 2 האלג מקודד כל תו על ידי ביט אחד. צעד האינדוקציה: נניח נכונות עבור א ב בגודל 1- C. אחרי איטרציה אחת, נותרים עם {z}, H = C {x,y} באשר x,y הם התווים עם מספר המופעים המזערי בקובץ, z הוא תו חדש שלא מופיע בא ב, ו-( f(y.f(z) = f(x) + לפי הנחת האינדוקציה, האלג בונה עץ אופטימלי T עבור H. הפלט T הוא העץ T שבו מוסיפים את x,y כילדים של z. 29

הוכחת נכונות (המשך) למה: קיים עץ אופטימלי *T עבורו x,y הם עלים אחים בעומק מירבי ב-* T. הוכחה יהי T עץ קידוד אופטימלי כלשהו עם עלים אחים בעומק מירבי v ובין ל- x u נחליף בין.f(x) וכן ש-( f(y f(u) נניח ש-( f(v.u,v ל- y כדי לקבל את *T. B(T) - B(T*) = c C f(c) dt(c) - c C f(c) dt*(c) = f(x) dt(x) + f(u) dt(u) - f(x) dt*(x) - f(u) dt*(u) + f(y) dt(y) + f(v) dt(v) - f(y) dt*(y) - f(v) dt*(v) = f(x) dt(x) + f(u) dt(u) - f(x) dt(u) - f(u) dt(x) + f(y) dt(y) + f(v) dt(v) - f(y) dt(v) - f(v) dt(y) = (f(u)-f(x)) (dt(u)-dt(x)) + (f(v)-f(y)) (dt(v)-dt(y)) 0 0

הוכחת נכונות (המשך) יהי T העץ *T שבו הסרנו את העלים האחים.x,y נסמן את ההורה שלהם ב- z. זהו עץ קידוד עבור {z} H = C {x,y} לפי הנחת האינדוקציה: B(T*) = B(T ) + f(x) + f(y) B(T ) + f(x) + f(y) = B(T) f(x)dt*(x)+f(y)dt*(y) = (f(x)+f(y)) (dt (z)+1) = f(z)dt (z)+f(x)+f(y) f(x)dt(x) + f(y)dt(y) = (f(x)+f(y)) (dt (z)+1) = f(z)dt (z) + f(x) + f(y) כי 1

עץ פורש מינימום (עפ מ) הקלט: גרף לא מכוון וקשיר G=(V,E), בייצוג של רשימת סמיכויות. משקלות חיוביים על הקשתות w:e N,V V מכיל את כל,G T שהוא תת-גרף של הפלט: עץ והמשקל הכולל של קשתותיו מינימלי. 2

אלגוריתם Kruskal לעפ מ נעבור על הקשתות בסדר לא יורד של משקל. נוסיף לעץ כל קשת שלא סוגרת מעגל בתורה.

Kruskal_MST(G,w) T (V, ) CC {{x}: x V} sort(e,w) for each {x,y} E do if C(x) C(y) then E(T) E(T) {{x,y}} CC CC {C(x),C(y)} {C(x) C(y)} end if end for return T האלגוריתם של Kruskal לעפ מ המשתנה T יחזיק את העץ ההולך ונבנה המשתנה CC יחזיק את הרכיבים הקשירים של T הערך C(x) הוא הרכיב ב- CC שבו נמצא x. 4

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

דוגמת הרצה 2 4 1

הוכחת נכונות S V קבוצה הוא ב- G הגדרה: חתך ב- S. שפת החתך היא קבוצת הקשתות עם קצה אחד {e} שפת החתך. בעץ כל קשת e מגדירה חתך S(e) שעבורו T הוא עפ מ אםם לכל E(T) e ולכל E(G) f בשפת משפט: החתך S(e) מתקיים w(f).w(e) 2 4 1

הוכחת נכונות S V קבוצה הוא ב- G הגדרה: חתך ב- S. שפת החתך היא קבוצת הקשתות עם קצה אחד {e} שפת החתך. בעץ כל קשת e מגדירה חתך S(e) שעבורו T הוא עפ מ אםם לכל E(T) e ולכל E(G) f בשפת משפט: החתך S(e) מתקיים w(f).w(e) 2 e 4 1

הוכחת נכונות S V קבוצה הוא ב- G הגדרה: חתך ב- S. שפת החתך היא קבוצת הקשתות עם קצה אחד {e} שפת החתך. בעץ כל קשת e מגדירה חתך S(e) שעבורו T הוא עפ מ אםם לכל E(T) e ולכל E(G) f בשפת משפט: החתך S(e) מתקיים w(f).w(e) 2 4 e S(e) 1

הוכחת נכונות S V קבוצה הוא ב- G הגדרה: חתך ב- S. שפת החתך היא קבוצת הקשתות עם קצה אחד {e} שפת החתך. בעץ כל קשת e מגדירה חתך S(e) שעבורו T הוא עפ מ אםם לכל E(T) e ולכל E(G) f בשפת משפט: החתך S(e) מתקיים w(f).w(e) 2 4 f e S(e) 1

הוכחת המשפט הרעיון המרכזי: לכל עץ פורש T ולכל E(T) f E(G) יש E(T) e כך ש- (V,E(T) {e} {f}) הוא עץ פורש. בכיוון: עפ מ e מינימלית ב-( S(e. נתון עפ מ T של.G תהי E(T).e נניח שיש E(G) f בשפת החתך S(e) שעבורה w(e).w(f) < אזי העץ הבא: (V,E(T) {e} {f}) פורש את G ומשקלו נמוך יותר מזה של T. לכן זו סתירה להנחה ש- T עפ מ של G. 7

הדגמת ההוכחה 2 4 1 8

הדגמת ההוכחה 2 4 1 8

הדגמת ההוכחה 2 4 1 8

הוכחת המשפט (המשך) נוכיח את הכיוון ההפוך באינדוקציה. נמספר את קשתות T, ונראה שלכל {1- V,...,0,1,2} k, יש עפ מ שמכיל את k הקשתות הראשונות של T. בסיס האינדוקציה: = 0 k, הטענה טריוויאלית. נניח נכונות ל- 1-k. יהי *T עפ מ שמכיל את 1-k הקשתות הראשונות של T אבל לא את הקשת הבאה e. אם נוסיף את e ל-* T, נסגור מעגל C. מעגל זה חייב להכיל קשת f משפת החתך S(e) (לפי T). לפי הגדרת,S(e) לא ייתכן כי E(T) f. לכן, אם נוסיף ל-* T את e ונסיר את f, נקבל עץ כנדרש שמשקלו אינו גדול יותר ממשקל *T. 9

הדגמת ההוכחה 2 2 4 11 T 40

הדגמת ההוכחה 2 2 4 11 T T* 40

הדגמת ההוכחה 2 2 4 11 T T* 40

הדגמת ההוכחה 2 2 4 11 T T* 40

סיבוכיות האלגוריתם של Kruskal מיון הקשתות: E ). O( E log על ידי מבנה נתונים ל- union/find. CC מימוש מספר האיברים: V. אנחנו מבצעים E 2 פעולות,find ופחות מ- V פעולות.union נסתפק במימוש פשוט של.union/find הזמן הכולל לביצוע הפעולות הוא: V ). O( E log.( קשיר, אז E V -1 סיבוכיות הזמן: E ) G) O( E log 41

סכמה כללית לאלגוריתמים חמדנים לחישוב עפ מ 1. (איתחול) כל הקשתות לא צבועות. 2. אם בכל שפת חתך יש קשת כחולה ובכל מעגל יש קשת אדומה, עוצרים.. אחרת, מפעילים את אחד הכללים הבאים: הכלל הכחול: בשפת חתך שבה אין קשת כחולה, צובעים בכחול קשת קלה ביותר שאינה צבועה. הכלל האדום: במעגל שאין בו קשת אדומה, צובעים באדום קשת כבדה ביותר שאינה צבועה. 4. חוזרים ל- 2. 42

דוגמת הרצה 2 4 1 4

דוגמת הרצה 2 4 1 4

דוגמת הרצה 2 4 1 4

דוגמת הרצה 2 4 1 4

דוגמת הרצה 2 4 1 4

דוגמת הרצה 2 4 1 4

דוגמת הרצה 2 4 1 4

דוגמת הרצה 2 4 1 4

דוגמת הרצה 2 4 1 4

דוגמת הרצה 2 4 1 4

דוגמת הרצה 2 4 1 4

הוכחות משפט: בסיום התהליך כל הקשתות צבועות ותת-הגרף הנפרש על ידי הקשתות הכחולות הוא עץ פורש מינימום. למה: אחרי צביעת k קשתות, יש עפ מ שמכיל את כל הקשתות הכחולות ואף קשת אדומה. 44

הוכחות הלמה: אינדוקציה על k. הבסיס הוא 0=k. אין קשתות הוכחת צבועות, ולכן הטענה בוודאי נכונה. צעד האינדוקציה: נניח שצבענו את הקשתות,ek-1 e1,e2,... והטענה התקיימה, כלומר יש עפ מ T שמכיל את כל הקשתות הכחולות עד עתה ואף קשת אדומה עכשיו צובעים את הקשת (u,v). ek = מקרה א: הקשת נצבעת בכחול. כלומר, הכלל הכחול הופעל על חתך ש- ek בשפתו. ב- T יש מסלול מ- u ל- v. מסלול זה חייב לחצות את החתך לפחות פעם אחת, והקשת החוצה e לא צבועה באדום (כי אין קשת אדומה ב- T ) או בכחול (כי שפת החתך לא מכילה קשתות כחולות). אבל אז, לפי הכלל הכחול, משקל ek אינו גדול ממשקל e ולכן אפשר להחליף ביניהן ולקבל עפ מ T שמכיל גם את. ek 4

הוכחות מקרה ב: הקשת נצבעת באדום. כלומר, הכלל האדום הופעל על מעגל C שמכיל את הקשת. ek נניח ש- T מכיל את הקשת הזו. נתבונן בחתך S(ek), המוגדר על פי T. המעגל C חוצה את החתך לפחות עוד פעם אחת בקשת. e קשת זו אינה צבועה כחול (אחרת T מכיל מעגל). היא גם אינה צבועה אדום (כי C אינו מכיל קשתות אדומות). לכן משקל e לכל היותר כמשקל, ek לכן אפשר להחליף ביניהן ולקבל עפ מ T שאינו מכיל את. ek 4

הוכחות הוכחת המשפט: על פי הלמה, בכל שלב הקשתות הכחולות פורשות יער (שיכול לכלול צמתים מבודדים). נניח שנותרה קשת e מחברת שני עמים כחולים, אז חתך המפריד אם.e לא צבועה ביניהם אינו כולל קשתות כחולות, ולכן אפשר להפעיל עליו את ה e סוגרת מעגל ששאר קשתותיו כחולות, אזי היא כלל הכחול. אם חייבת להיות קשת כבדה ביותר במעגל זה, ולכן אפשר לצבוע אותה באדום לפי הכלל האדום. 47

מטרואידים ואלגוריתם החמדן הגדרה: זוג סדור (S,I) הוא מטרואיד אםם S קבוצה S לא ריקה של תת-קבוצות של קבוצה ו- I סופית המקיימת:.1 אם A I אזי לכל,B A גם.B I (ירושה) x A B כך אזי יש, A > ו- B.2 אם A,B I.B {x} I (החלפה) שמתקיים קבוצות בלתי-תלויות. כל איבר מקסימלי איברי I מכונים בסיס. ביחס להכלה נקרא 48

דוגמאות S היא קבוצת השורות של מטריצה. קבוצת הקבוצה אםם איברי A בת ל. נמצאת ב- I A שורות S היא קבוצת הקשתות של גרף. קבוצת הקבוצה A תת-הגרף המושרה ע י אםם ב- I קשתות A נמצאת אינו מכיל מעגל פשוט. 49

אלגוריתם החמדן נתונה פונקציית משקל. w:s R אלגוריתם החמדן מנסה למצוא קבוצה I ב- I בעלת משקל כולל מירבי. Greedy(S,w) A while x S, A {x} I do x argmax{w(x): x S A {x} I} A A {x} end while return A 0

משפט Rado-Gale-Edmonds תהי I קבוצה לא ריקה של תת-קבוצות של S שמקיימת את תכונת הירושה:.A B I A I אלגוריתם החמדן מוצא, לכל פונקציית משקל חיובית w, קבוצה A I בעלת משקל כולל מירבי אםם (S,I) מטרואיד. 1

הוכחת המשפט בכיוון: מטרואיד אלג החמדן אופטימלי. נניח בשלילה שהטענה לא נכונה. יהיו a1,a2,a,...,am האיברים בפלט האלג בסדר לא עולה של משקל, ו- b1,b2,b,...,bn האיברים בפתרון אופטימלי כלשהו באותו סדר. יהי k האינדקס הראשון עבורו w(ak). w(bk) > {a1,a2,...,ak-1}, {b1,b2,...,bk} I לכן קיים i k 1 עבורו {a1,a2,...,ak-1} bi ו-.{a1,a2,...,ak-1,bi} I זו סתירה לבחירה של האלג החמדן ב-. ak 2

הוכחת המשפט (המשך) בכיוון: אלג חמדן אופטימלי מטרואיד. נניח בשלילה שהטענה לא נכונה. אזי יש קבוצות {a1,a2,a,...,am}, {b1,b2,b,...,bn} I עבורן,m < n אבל לכל {1,2,...,n},i.{a1,a2,a,...,am,bi} I אלגוריתם החמדן ייכשל עם פונקציית המשקל w(a) = m + 2, a {a1,a2,a,...,am}; w(b) = m + 1, b {b1,b2,b,...,bn} {a1,a2,a,...,am}; w(c) = 0, otherwise.

תרגיל בית 1. נתונים n מערכים ממויינים של מספרים טבעיים באורכים שונים. מיזוג של שני מערכים באורך a ו- b יוצר מערך ממויין אחד באורך a+b בזמן.O(a+b) תנו אלגוריתם לחישוב סדר אופטימלי של מיזוגים של זוגות מערכים (כולל תוצאות ביניים) ליצירת מערך ממויין אחד מכל n מערכי הקלט. 2. הוכיחו את נכונות האלגוריתם של Kruskal על סמך משפט.Rado-Gale-Edmonds 4